package cn.smile.business.core;

import cn.smile.bean.dto.core.FileUploadDTO;
import cn.smile.bean.entity.core.FileUpload;
import cn.smile.bean.form.core.file.FileUploadForm;
import cn.smile.bean.form.core.file.FileUploadQueryForm;
import cn.smile.commons.domain.IBaseService;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author 龙逸
 * @since 2022-04-01
 */
public interface IFileUploadService extends IBaseService<FileUpload> {

    /**
     * 文件上传 Minio
     *
     * @param form 上传文件参数
     * @return 附件记录ID
     */
    String fileUpload(FileUploadForm form);

    /**
     * 自动删除过期文件
     */
    void autoDelFile();

    /**
     * 微信小程序上传图片
     *
     * @param file 文件对象
     * @return 上传结果
     */
    String miniUpload(MultipartFile file);


    /**
     * 条件查询文件上传列表
     *
     * @param form 查询参数
     * @return 查询结果
     */
    List<FileUploadDTO> getFileList(FileUploadQueryForm form);

    /**
     * 根据上传记录ID删除记录及文件
     *
     * @param id 上传记录ID
     * @return 删除结果
     */
    Boolean delFileById(String id);
}
